// 增量事件-顾客
import { getURL, $http } from './api.js';
import { createDocument, getCurrentDate, getDocuments, deleteDocumentByCondition, reviseDocument } from '../index.js';
(function() {
  // 顾客生命旅程配置
  var analyzeConfig = $http.get({
    uri: getURL('/scrm/customer/analyze-config'),
    params: {}
  }).data;
  /**
   * 获取增量事件列表
   */
  getEventList(1);
  function getEventList(page) {
    var uri = getURL('/scrm/event/get-list');
    var startTime = Math.floor(getCurrentDate().getTime() / 1000);
    var endTime = Math.floor((getCurrentDate().getTime() - 864e5) / 1000);
    var params = {};
    var headers = {
      'Content-Type': 'application/json;charset=UTF-8'
    }
    var bodyParams = {
      start_time: startTime,
      end_time: endTime,
      event: 'customer',
      page,
      page_size: 500
    }
    var res = $http.post({
      uri,
      params,
      headers,
      data: bodyParams
    })
    // 如果请求失败，进行重试
    if (res.code == 40000) {
      getEventList(page);
      return;
    }
    if (res.status != 'ok') {
      return
    }
    var data = res.data;
    var list = data.data;
    // 如果有下一页，继续获取
    if (data.last_page > data.current_page) {
      getEventList(++page);
    }
    for (var i = 0; i < list.length; i++) {
      var item = list[i];
      // 员工信息变更
      if (item.type == 5004) {
        getCustomersDetail(item);
      } else {
        // 添加员工、删除员工、员工删除顾客
        setStaffCustomerDocument(item, item.type);
      }
    }
  }

  // 顾客信息变更，获取顾客详情，同步顾客信息表
  function getCustomersDetail(item) {
    var uri = getURL('/scrm/customer/customer-detail');
    var formName = '顾客信息表';
    var params = {
      'external_userid': item.param.extend_user_id
    }
    var res = $http.get({
      uri,
      params,
    })
    // 删除当前顾客的信息
    deleteDocumentByCondition({
      formName,
      conditions: {
        '顾客企微标识': item.param.extend_user_id
      }
    })
    var data = res.data;
    // 导入新顾客信息到信息表
    createDocument({
      formName,
      formData: {
        '顾客昵称': data.nick_name,
        '顾客真实姓名': data.real_name,
        '顾客企微标识': data.external_userid,
        '头像': data.avatar,
        '性别': data.gender,
        '顾客生日年份': data.birthday_year,
        '顾客手机号': data.mobile,
        '首次添加企微时间': data.create_time,
        '顾客年龄': data.age,
        '顾客资料完善度': data.completeness,
        '顾客状态': analyzeConfig[data.life_type - 1]
      }
    })
  }

  // 顾客添加员工、删除员工、员工删除顾客，同步员工顾客关联表
  function setStaffCustomerDocument(item, type) {
    var formName = '员工顾客关联表';
    // 导入新的关联信息
    var typeMap = {
      '5001': '1',
      '5002': '2',
      '5003': '3'
    }
    var formData = {
      '员工企微标识': item.param.staff_id,
      '顾客企微标识': item.param.extend_user_id,
      '状态': typeMap[type]
    }
    if (item.param.is_first) {
      formData['每个员工首次添加时间'] = item.create_time * 1000;
    }
    // 修改表单，如果原本有数据就修改，否则新增一条
    var documents = getDocuments({
      formName,
      params: {
        '员工企微标识': item.param.staff_id,
        '顾客企微标识': item.param.extend_user_id
      }
    })
    if (documents.size() > 0) {
      var document = documents.get(0);
      reviseDocument({
        document,
        formData
      })
    } else {
      // formData['每个员工首次添加时间'] = item.create_time * 1000;
      createDocument({
        formName,
        formData
      })
    }
  }
})()
